// pages/user/phone-login/index.js
Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		phoneNumber: '', // 手机号
		verificationCode: '', // 验证码
		isAgreed: false, // 协议是否已勾选
		statusBarHeight: 44, // 系统状态栏高度
		codeCountdown: 0, // 验证码倒计时
		countdownTimer: null, // 倒计时定时器
		isPhoneValid: false, // 手机号是否有效
		canLogin: false, // 是否可以登录
		checkboxError: false // 复选框错误状态
	},

	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad(options) {
		// 获取系统信息
		this.getSystemInfo()
	},

	/**
	 * 获取系统信息
	 */
	getSystemInfo() {
		const systemInfo = wx.getSystemInfoSync()
		this.setData({
			statusBarHeight: systemInfo.statusBarHeight || 44
		})
	},

	/**
	 * 返回上一页
	 */
	onBack() {
		wx.navigateBack({
			delta: 1,
			success: () => {
				console.log('返回上一页成功')
			},
			fail: (error) => {
				console.error('返回上一页失败:', error)
				// 降级处理：跳转到登录页
				wx.navigateTo({
					url: '/pages/user/login/index'
				})
			}
		})
	},

	/**
	 * 手机号输入处理
	 */
	onPhoneInput(e) {
		const phoneNumber = e.detail.value
		const isValid = this.validatePhone(phoneNumber)
		
		this.setData({
			phoneNumber,
			isPhoneValid: isValid
		})
		
		this.updateCanLogin()
	},

	/**
	 * 验证码输入处理
	 */
	onCodeInput(e) {
		const verificationCode = e.detail.value
		
		this.setData({
			verificationCode
		})
		
		this.updateCanLogin()
	},

	/**
	 * 验证手机号格式
	 */
	validatePhone(phone) {
		const phoneRegex = /^1[3-9]\d{9}$/
		return phoneRegex.test(phone)
	},

	/**
	 * 更新登录按钮状态
	 */
	updateCanLogin() {
		const { phoneNumber, verificationCode, isAgreed } = this.data
		const canLogin = this.validatePhone(phoneNumber) && 
						 verificationCode.length >= 4 && 
						 isAgreed
		
		this.setData({
			canLogin
		})
	},

	/**
	 * 获取验证码
	 */
	getVerificationCode() {
		// 检查是否在倒计时中或手机号无效
		if (this.data.codeCountdown > 0 || !this.data.isPhoneValid) {
			if (!this.data.isPhoneValid) {
				wx.showToast({
					title: '请输入正确的手机号',
					icon: 'none',
					duration: 2000
				})
			}
			return
		}

		// 显示加载提示
		wx.showLoading({
			title: '发送中...',
			mask: true
		})

		// 模拟发送验证码请求
		setTimeout(() => {
			wx.hideLoading()
			wx.showToast({
				title: '验证码已发送',
				icon: 'success',
				duration: 2000
			})

			// 开始倒计时
			this.startCountdown()
		}, 1000)

		// 实际项目中这里应该调用后端API
		// this.sendVerificationCode(this.data.phoneNumber)
	},

	/**
	 * 开始倒计时
	 */
	startCountdown() {
		let countdown = 60
		this.setData({
			codeCountdown: countdown
		})

		const timer = setInterval(() => {
			countdown--
			if (countdown <= 0) {
				clearInterval(timer)
				this.setData({
					codeCountdown: 0,
					countdownTimer: null
				})
			} else {
				this.setData({
					codeCountdown: countdown
				})
			}
		}, 1000)

		this.setData({
			countdownTimer: timer
		})
	},

	/**
	 * 处理登录
	 */
	handleLogin() {
		if (!this.data.canLogin) {
			if (!this.data.isAgreed) {
				this.showAgreementError()
			} else {
				wx.showToast({
					title: '请完善登录信息',
					icon: 'none',
					duration: 2000
				})
			}
			return
		}

		// 显示加载提示
		wx.showLoading({
			title: '登录中...',
			mask: true
		})

		// 模拟登录过程
		setTimeout(() => {
			wx.hideLoading()
			wx.showToast({
				title: '登录成功',
				icon: 'success',
				duration: 2000
			})

			// 登录成功后跳转到首页
			setTimeout(() => {
				wx.switchTab({
					url: '/pages/home/index/index'
				})
			}, 2000)
		}, 1500)

		// 实际项目中这里应该调用后端API
		// this.loginWithPhone(this.data.phoneNumber, this.data.verificationCode)
	},

	/**
	 * 切换协议勾选状态
	 */
	toggleAgreement() {
		this.setData({
			isAgreed: !this.data.isAgreed,
			checkboxError: false
		})
		
		this.updateCanLogin()
	},

	/**
	 * 显示协议错误提醒
	 */
	showAgreementError() {
		this.setData({
			checkboxError: true
		})

		wx.showToast({
			title: '请先同意服务协议',
			icon: 'none',
			duration: 2000
		})

		// 2秒后移除错误样式
		setTimeout(() => {
			this.setData({
				checkboxError: false
			})
		}, 2000)
	},

	/**
	 * 显示服务协议
	 */
	showServiceAgreement() {
		wx.navigateTo({
			url: '/pages/home-sub/agreement/index?type=user',
			success: () => {
				console.log('跳转到用户协议页面成功');
			},
			fail: (error) => {
				console.error('跳转到用户协议页面失败:', error);
				wx.showToast({
					title: '跳转失败，请重试',
					icon: 'none'
				});
			}
		});
	},

	/**
	 * 显示隐私协议
	 */
	showPrivacyAgreement() {
		wx.navigateTo({
			url: '/pages/home-sub/agreement/index?type=privacy',
			success: () => {
				console.log('跳转到隐私政策页面成功');
			},
			fail: (error) => {
				console.error('跳转到隐私政策页面失败:', error);
				wx.showToast({
					title: '跳转失败，请重试',
					icon: 'none'
				});
			}
		});
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady() {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow() {

	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide() {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload() {
		// 清理倒计时定时器
		if (this.data.countdownTimer) {
			clearInterval(this.data.countdownTimer)
		}
	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh() {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom() {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage() {

	}
})